/*

 * and open the template in the editor.
 */

package hcmus.fit.master.sevensea.bus;

import hcmus.fit.master.sevensea.R;
import hcmus.fit.master.sevensea.bus.CannonState;
import hcmus.fit.master.sevensea.bus.Explosion;
import hcmus.fit.master.sevensea.bus.Sea;
import hcmus.fit.master.sevensea.bus.Ship;
import hcmus.fit.master.sevensea.core.Constant;
import hcmus.fit.master.sevensea.core.AnimationSprite;

import java.util.List;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Point;

/**
 * 
 * @author hvp
 */
public class Cannon extends AnimationSprite {

    public Cannon(Resources resources, Point p) {
        super(resources, p);
    }

    @Override
    protected int getResourceId() {
        return R.drawable.cannon;
    }

    @Override
    protected int getNbOfCol() {
        return 1;
    }

    @Override
    protected int getNbOfRow() {
        return 1;
    }
    
//    public static List Resource;
//    public int DestX;
//    public int DestY;
//    public Explosion Explosion;
//    private double _tempX;
//    private double _tempY;
//    // public static SoundPlayer Sound;
//    // public static Player Sound;
//    public int State;
//
//    public Cannon(Sea seamap, int x, int y) {
//        super(seamap, x, y);
//        frames = (List<Bitmap>) Resource.get(0);
//        NumberOfFrame = frames.length;
//        DestX = x;
//        DestY = y;
//        Explosion = new Explosion(seamap, x, y);
//        _tempX = x * Constant.CellWidth * 1.0;
//        _tempY = y * Constant.CellHeight * 1.0;
//        State = CannonState.Flying;
//    }
//
//    public void InitPosition(int x, int y) {
//        Position = new Point(x * Constant.CellWidth + Constant.CellWidth / 2 - frames[0].getWidth() / 2, y
//                * Constant.CellHeight + Constant.CellHeight / 2 - frames[0].getHeight() / 2);
//        X = x;
//        Y = y;
//        _tempX = Position.x;
//        _tempY = Position.y;
//    }
//
//    public void Move() {
//        int deltaX = DestX - X;
//        int deltaY = DestY - Y;
//        // trai tren
//        if (deltaX < 0 && deltaY < 0) {
//            _tempX -= Constant.CannonMoveDeltaX;
//            _tempY -= Constant.CannonMoveDeltaY;
//        }
//        // trai
//        else if (deltaX < 0 && deltaY == 0) {
//            _tempX -= Constant.CannonMoveDeltaX;
//        }
//
//        // trai duoi
//        else if (deltaX < 0 && deltaY > 0) {
//            _tempX -= Constant.CannonMoveDeltaX;
//            _tempY += Constant.CannonMoveDeltaY;
//        }
//
//        // tren
//        else if (deltaX == 0 && deltaY < 0) {
//            _tempY -= Constant.CannonMoveDeltaY;
//        }
//
//        // duoi
//        else if (deltaX == 0 && deltaY > 0) {
//            _tempY += Constant.CannonMoveDeltaY;
//        }
//
//        // phai tren
//        else if (deltaX > 0 && deltaY < 0) {
//            _tempX += Constant.CannonMoveDeltaX;
//            _tempY -= Constant.CannonMoveDeltaY;
//        }
//        // phai
//        else if (deltaX > 0 && deltaY == 0) {
//            _tempX += Constant.CannonMoveDeltaX;
//        }
//
//        // phai duoi
//        else if (deltaX > 0 && deltaY > 0) {
//            _tempX += Constant.CannonMoveDeltaX;
//            _tempY += Constant.CannonMoveDeltaY;
//        }
//        Position = new Point((int) Math.floor(_tempX), (int) Math.floor(_tempY));
//    }
//
//    public boolean Hit() {
//        if (Position.x == DestX * Constant.CellWidth + Constant.CellWidth / 2 - frames[0].getWidth() / 2)
//            if (Position.y == DestY * Constant.CellHeight + Constant.CellHeight / 2 - frames[0].getHeight()
//                    / 2) {
//                return true;
//            }
//        return false;
//    }
//
//    public boolean NextFrame() {
//        switch (State) {
//            case CannonState.KillEnemyFlying:
//                if (Hit()) {
//                    State = CannonState.KillEnemyHitted;
//                } else {
//                    Move();
//                }
//                break;
//            case CannonState.KillEnemyHitted:
//                SeaMap.Items.remove(this);
//                if (SeaMap.Map[DestY][DestX] == null || SeaMap.Map[DestY][DestX].IsWhirl()) {
//                    SeaMap.CreateSplash(DestX, DestY);
//                } else if (SeaMap.Map[DestY][DestX].IsShip()) {
//                    if (SeaMap.Map[DestY][DestX] != SeaMap.MainShip) {
//                        SeaMap.BoardControl._Score.SCORE += ((Ship) SeaMap.Map[DestY][DestX]).GetScore();
//                        SeaMap.Items.remove(SeaMap.Map[DestY][DestX]);
//                        SeaMap.Map[DestY][DestX] = null;
//                        SeaMap.CreateRubble(DestX, DestY);
//                        SeaMap.CreateExplosion(DestX, DestY);
//                    }
//                }
//                SeaMap.Busy--;
//                if (SeaMap.Busy == 1) {
//                    SeaMap.EnemyMove();
//                }
//                // return false;
//                break;
//            case CannonState.Flying:
//                if (Hit()) {
//                    State = CannonState.Hitted;
//                } else {
//                    Move();
//                }
//                break;
//            case CannonState.Hitted:
//                SeaMap.Items.remove(this);
//                if (SeaMap.Map[DestY][DestX] == null || SeaMap.Map[DestY][DestX].IsWhirl()) {
//                    SeaMap.CreateSplash(DestX, DestY);
//                } else if (SeaMap.Map[DestY][DestX].IsShip()) {
//                    SeaMap.Items.remove(SeaMap.Map[DestY][DestX]);
//                    SeaMap.Map[DestY][DestX] = null;
//                    SeaMap.CreateRubble(DestX, DestY);
//                    SeaMap.CreateExplosion(DestX, DestY);
//                }
//                SeaMap.Busy--;
//                break;
//        }
//        return true;
//    }
}
